﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Controller;
using Interfaces;

namespace GUI
{
    public partial class StartSkærm : Form
    {
        private TurneringsSystem control;

        #region Konstruktør
        public StartSkærm(TurneringsSystem control)
        {
            InitializeComponent();
            this.control = control;
            OpdaterListe();
        }
        #endregion

        #region Methods
        private void StartSkærm_Load(object sender, EventArgs e)
        {
            OpdaterListe();
        }

        private void OpdaterListe()
        {
            IEnumerator Turneringer = control.GetTurneringsIterator();
            Turneringer.Reset();
            lstturnering.Items.Clear();
            while (Turneringer.MoveNext())
            {
                ListViewItem linie = new ListViewItem();
                ITurnering nuværendeTurnering = (ITurnering)Turneringer.Current;
                linie.Text = nuværendeTurnering.Turneringsnavn;
                linie.SubItems.Add(nuværendeTurnering.Gruppenavn);
                linie.SubItems.Add(nuværendeTurnering.Startdato.ToString());
                linie.Tag = nuværendeTurnering.TurneringsID;
                lstturnering.Items.Add(linie);
            }
        }
        #endregion

        #region Knapper
        private void btnNyTurnering_Click(object sender, EventArgs e)
        {
            btnÅben.Enabled = false;
            btnÅben.Cursor = System.Windows.Forms.Cursors.Arrow;
            nyTurnering nyTurneringGUI = new nyTurnering(control, null);
            this.Hide();
            nyTurneringGUI.ShowDialog();
            OpdaterListe();
            btnSlet.Enabled = false;
            btnÅben.Enabled = false;
            this.Show();
        }

        private void btnÅben_Click(object sender, EventArgs e)
        {
            int aktuelTurnering = Convert.ToInt32(lstturnering.Items[lstturnering.SelectedIndices[0]].Tag.ToString());
            TurneringsSkema turneringsSkemaGUI = new TurneringsSkema(control, aktuelTurnering);
            this.Hide();
            turneringsSkemaGUI.ShowDialog();
            OpdaterListe();
            btnSlet.Enabled = false;
            btnÅben.Enabled = false;
            this.Show();
        }

        private void btnSlet_Click(object sender, EventArgs e)
        {
            int aktuelTurnering = Convert.ToInt32(lstturnering.Items[lstturnering.SelectedIndices[0]].Tag.ToString());
            bool succes = control.SletTurnering(aktuelTurnering);
            control.GemData();
            if (succes == false)
            {
                MessageBox.Show("En fejl opstod, prøv igen", "Advarsel", MessageBoxButtons.OK);
            }
            OpdaterListe();

            try
            {
                lstturnering.Items[lstturnering.SelectedIndices[0]].Tag.ToString();
            }
            catch
            {
                btnSlet.Enabled = false;
                btnÅben.Enabled = false;
            }
        }

        private void btnLuk_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void lstturnering_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstturnering.SelectedItems.Count == 1)
            {
                btnÅben.Enabled = true;
                btnSlet.Enabled = true;
                btnÅben.Cursor = System.Windows.Forms.Cursors.Hand;
                btnSlet.Cursor = System.Windows.Forms.Cursors.Hand;
            }
            else
            {
                btnÅben.Enabled = false;
                btnSlet.Enabled = false;
            }
        }
        #endregion
    }
}
